package com.zhaoxi.project.sys.mapper;

import java.util.List;

import com.zhaoxi.project.sys.domain.SysDictType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.zhaoxi.project.sys.domain.SysDictData;

/**
 * 字典表 数据层
 *
 * @author zhaoxi
 */
@Mapper
public interface SysDictDataMapper {
    /**
     * 1-1、字典数据管理：根据条件分页查询字典数据列表（xieleilei 12.6）
     *
     * @param dictData 字典数据信息
     * @return 字典数据集合信息
     */
    List<SysDictData> selectDictDataList(SysDictData dictData);

    /**
     * 1-2、字典数据管理：新增数据类型时，根据字典类型查询字典数据（xieleilei 12.6）
     *
     * @param dictData 字典类型
     * @return 字典数据集合信息
     */
    List<SysDictData> selectDictDataByType(SysDictData dictData);

    /**
     * 1-3、字典数据管理：修改字典数据时，根据字典数据ID查询信息（xieleilei 12.6）
     *
     * @param dictCode 字典数据ID
     * @return 字典数据
     */
    SysDictData selectDictDataById(Long dictCode);

    /**
     * 1-4、字典类型管理——查询字典类型对应字典数据的数量：以此判断字典类型是否可以删除（xieleilei 12.6）
     *
     * @param dictType 字典类型
     * @return 字典数据
     */
    int countDictDataByType(String dictType);

    /**
     * 1-5、根据字典类型和字典键值查询字典数据信息（该方法暂未使用 xieleilei 12.6）
     *
     * @param dictType  字典类型
     * @param dictValue 字典键值
     * @return 字典标签
     */
    String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);

    /**
     * 2-1、字典数据管理：新增字典数据类型（xieleilei 12.6）
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    int insertDictData(SysDictData dictData);

    /**
     * 2-2、字典数据管理：批量插入字典数据类型（xieleilei 12.6）
     *
     * @param dictDatas 字典数据信息
     * @return 结果
     */
    int batchSysDictData(List<SysDictData> dictDatas);

    /**
     * 3-1、字典数据管理：修改字典数据信息（xieleilei 12.6）
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    int updateDictData(SysDictData dictData);

    /**
     * 3-2、修改字典类型的时候，同步修改字典数据表的字典类型关键字（xieleilei 12.6）
     *
     * @param oldDictType 旧字典类型
     * @param newDictType 新字典类型
     * @return 结果
     */
    int updateDictDataType(
            @Param("oldDictType") SysDictType oldDictType,
            @Param("newDictType") SysDictType newDictType);

    /**
     * 4-1、字典数据管理：通过字典ID删除字典数据信息
     *
     * @param dictCode 字典数据ID
     * @return 结果
     */
    int deleteDictDataById(Long dictCode);

    /**
     * 4-2、字典数据管理：批量删除字典数据信息
     *
     * @param dictCodes 需要删除的字典数据ID
     * @return 结果
     */
    int deleteDictDataByIds(Long[] dictCodes);

    List<SysDictData> sys_role_roleKey(SysDictData dictData);

    List<SysDictData> hrp_partner(SysDictData dictData);

    List<SysDictData> wms_product_line(SysDictData dictData);

    List<SysDictData> wms_order_type(SysDictData dictData);

    List<SysDictData> wms_order_line_sum(SysDictData dictData);

    List<SysDictData> fms_account(SysDictData dictData);

    List<SysDictData> wms_product_code(SysDictData dictData);

    List<SysDictData> wms_product_stock(SysDictData dictData);

    int deleteDictDataByTenantId(Long tenantId);
}
